###
# Label: 文字或图像标签
###

import tkinter as tk
import tkinter.ttk as ttk

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.count = 0
    
    def load_basic_config(self):
        self.title('My Label')
        self.geometry(f'960x720')
        self.configure(bg='blue')
        self.resizable(False, False)
    
    def add_label(self, text='My text label'):
        #self.label = tk.Label(self, text=text+'\n'+'Say Hello'+'\n' + 'Say ByeBye', bitmap='hourglass')
        self.image = tk.PhotoImage(file='pic.png')
        self.label = tk.Label(self, text=text, image=self.image) # 加载图片，注意bitmap与image不能共存
        #self.label.configure(width=20) # 文本框的宽度，单位是字符
        #self.label.configure(height=12) # 文本框的高度，ttk的Label没有高度设置，只能通过文本换行实现
        #self.label.configure(anchor='center') # 字体在文本中的位置，使用的是方向，东南西北 ESWN及其组合
        self.label.configure(foreground='yellow', background='red')
        self.label.configure(wraplength=40) # 设置文本的换行长度，超过这个长度会另起一行,单位是像素
        self.label.configure(font='Times 10 bold') # 设置字体
        self.label.configure(justify='left') # 多行文本，每行文本输出的位置：左对齐/右对齐/居中
        self.label.configure(compound='top') # 图相对于文字的位置
        self.label.configure(relief='raised') # 文本边框的效果
        self.label.configure(padx=10, pady=20) # 设置文字和边框的宽度和高度，可能会与width和height设置冲突
        self.label.configure(cursor='heart') # 设置光标在标签内的的形状
        self.label.pack()

        # 分割线
        self.sep = ttk.Separator(self, orient='horizontal')
        self.sep.pack(fill='x', padx=50)
    
    def run(self):
        self.label.configure(text=str(self.count))
        self.count += 1
        self.label.after(1000, self.run)  # 重复调用
        


if __name__ == '__main__':
    app = App()
    app.load_basic_config()
    app.add_label("Label Test")

    print(f'all keys: {app.label.keys()}')

    app.run()

    app.mainloop()